Chapitre 5 Les opérations sur données attributaires

Nous utiliserons les données de la table des régions de la France métropolitaine et des EPCI de la France Métropolitaine

load("data/territoires.RData")
glimpse(epci_geo)
## Observations: 1,241
## Variables: 5
## $ ID        <fct> EPCI00000000000000000001, EPCI00000000000000000002, EP…
## $ CODE_EPCI <fct> 200000172, 200000438, 200000545, 200000628, 200000800,…
## $ NOM_EPCI  <fct> "CC Faucigny-Glières", "CC du Pays de Pontchâteau Sain…
## $ TYPE_EPCI <fct> CC, CC, CC, CC, CC, CC, CC, CC, CC, CC, CA, CC, CC, CC…
## $ geometry  <MULTIPOLYGON [m]> MULTIPOLYGON (((964676 6561..., MULTIPOLY…
glimpse(regions_geo)
## Observations: 13
## Variables: 4
## $ ID        <fct> REG000000000000000000001, REG000000000000000000002, RE…
## $ NOM_REG   <fct> AUVERGNE-RHONE-ALPES, BOURGOGNE-FRANCHE-COMTE, BRETAGN…
## $ INSEE_REG <fct> 84, 27, 53, 24, 94, 44, 32, 11, 28, 75, 76, 52, 93
## $ geometry  <MULTIPOLYGON [m]> MULTIPOLYGON (((974065 6594..., MULTIPOLY…

5.1 filtrer

Nous souhaitons par exemple filtrer nos epci sur les epci de la région Pays de la Loire.

reg_52 <- regions_geo %>%
  filter(INSEE_REG == "52")

epci_r52 <- epci_geo[reg_52, , op = st_within]

mapview(list(reg_52, epci_r52), zcol = c("NOM_REG", "NOM_EPCI"), legend = F)

On voit ici que le résultat n’est pas très concluant, il manque 2 epci de la région. Prenons un buffer autour de la région

Qu’est ce qu’un buffer ? C’est un tampon qui va nous permettre d’appliquer une transformation sur votre objet vectoriel.

A partir d’une couche de départ de type ponctuel, linéaire ou polygonal, le buffer va créer une nouvelle couche vectorielle. La géométrie de cette couche représente des objets surfaciques dont les frontières sont positionnées à une distance euclidienne, définie par l’utilisateur, des limites des objets vectoriels de la couche de départ.

La fonction qui permet de faire cela avec sf s’appelle st_buffer.

st_buffer prend en paramètre un objet de type sf et une distance dont l’unité est définie par celle de l’objet sf que l’on peut obtenir comme ceci st_crs(x)$units.

reg_52_buffer <- reg_52 %>%
  st_buffer(dist = 5000)

mapview(list(reg_52_buffer, reg_52), layer.name = c("Pays de la Loire avec un buffer de 5 km", "Pays de la Loire"), col.regions = list("#440154FF", "#FDE725FF"))
epci_r52_buffer <- epci_geo[reg_52_buffer, , op = st_within]

mapview(list(reg_52, epci_r52_buffer), zcol = c("NOM_REG", "NOM_EPCI"), legend = F)